home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 3 / Cream of the Crop 3.iso / comm / wnos5src.zip / N8530.H < prev    next >
Text File  |  1993-08-09  |  8KB  |  226 lines

  1. #ifndef    _8530_H
  2. #define _8530_H
  3.  
  4. #ifndef _GLOBAL_H
  5. #include "global.h"
  6. #endif
  7.  
  8. /* 8530 Serial Communications Controller Register definitions */
  9. #define    FLAG            0x7e
  10.  
  11. /* Write Register 0 */
  12. #define    R0                0        /* Register selects */
  13. #define    R1                1
  14. #define    R2                2
  15. #define    R3                3
  16. #define    R4                4
  17. #define    R5                5
  18. #define    R6                6
  19. #define    R7                7
  20. #define    R8                8
  21. #define    R9                9
  22. #define    R10                10
  23. #define    R11                11
  24. #define    R12                12
  25. #define    R13                13
  26. #define    R14                14
  27. #define    R15                15
  28.  
  29. #define    NULLCODE        0        /* Null Code */
  30. #define    POINT_HIGH        0x8        /* Select upper half of registers */
  31. #define    RES_EXT_INT        0x10    /* Reset Ext. Status Interrupts */
  32. #define    SEND_ABORT        0x18    /* HDLC Abort */
  33. #define    RES_RxINT_FC    0x20    /* Reset RxINT on First Character */
  34. #define    RES_Tx_P        0x28    /* Reset TxINT Pending */
  35. #define    ERR_RES            0x30    /* Error Reset */
  36. #define    RES_H_IUS        0x38    /* Reset highest IUS */
  37.  
  38. #define    RES_Rx_CRC        0x40    /* Reset Rx CRC Checker */
  39. #define    RES_Tx_CRC        0x80    /* Reset Tx CRC Checker */
  40. #define    RES_EOM_L        0xC0    /* Reset EOM latch */
  41.  
  42. /* Write Register 1 */
  43. #define    EXT_INT_ENAB    0x1        /* Ext Int Enable */
  44. #define    TxINT_ENAB        0x2        /* Tx Int Enable */
  45. #define    PAR_SPEC        0x4        /* Parity is special condition */
  46.  
  47. #define    RxINT_DISAB        0        /* Rx Int Disable */
  48. #define    RxINT_FCERR        0x8        /* Rx Int on First Character Only or Error */
  49. #define    INT_ALL_Rx        0x10    /* Int on all Rx Characters or error */
  50. #define    INT_ERR_Rx        0x18    /* Int on error only */
  51.  
  52. #define    WT_RDY_RT        0x20    /* Wait/Ready on R/T */
  53. #define    WT_FN_RDYFN        0x40    /* Wait/FN/Ready FN */
  54. #define    WT_RDY_ENAB        0x80    /* Wait/Ready Enable */
  55.  
  56. /* Write Register #2 (Interrupt Vector) */
  57.  
  58. /* Write Register 3 */
  59. #define    RxENABLE        0x1        /* Rx Enable */
  60. #define    SYNC_L_INH        0x2        /* Sync Character Load Inhibit */
  61. #define    ADD_SM            0x4        /* Address Search Mode (SDLC) */
  62. #define    RxCRC_ENAB        0x8        /* Rx CRC Enable */
  63. #define    ENT_HM            0x10    /* Enter Hunt Mode */
  64. #define    AUTO_ENAB        0x20    /* Auto Enables */
  65. #define    Rx5                0x0        /* Rx 5 Bits/Character */
  66. #define    Rx7                0x40    /* Rx 7 Bits/Character */
  67. #define    Rx6                0x80    /* Rx 6 Bits/Character */
  68. #define    Rx8                0xc0    /* Rx 8 Bits/Character */
  69.  
  70. /* Write Register 4 */
  71. #define    PAR_ENA            0x1        /* Parity Enable */
  72. #define    PAR_EVEN        0x2        /* Parity Even/Odd* */
  73. #define    SYNC_ENAB        0        /* Sync Modes Enable */
  74. #define    SB1                0x4        /* 1 stop bit/char */
  75. #define    SB15            0x8        /* 1.5 stop bits/char */
  76. #define    SB2                0xc        /* 2 stop bits/char */
  77. #define    MONSYNC            0        /* 8 Bit Sync character */
  78. #define    BISYNC            0x10    /* 16 bit sync character */
  79. #define    SDLC            0x20    /* SDLC Mode (01111110 Sync Flag) */
  80. #define    EXTSYNC            0x30    /* External Sync Mode */
  81. #define    X1CLK            0        /* x1 clock mode */
  82. #define    X16CLK            0x40    /* x16 clock mode */
  83. #define    X32CLK            0x80    /* x32 clock mode */
  84. #define    X64CLK            0xC0    /* x64 clock mode */
  85.  
  86. /* Write Register 5 */
  87. #define    TxCRC_ENAB        0x1        /* Tx CRC Enable */
  88. #define    RTS                0x2        /* RTS */
  89. #define    SDLC_CRC        0x4        /* SDLC/CRC-16 */
  90. #define    TxENAB            0x8        /* Tx Enable */
  91. #define    SND_BRK            0x10    /* Send Break */
  92. #define    Tx5                0x0        /* Tx 5 bits (or less)/character */
  93. #define    Tx7                0x20    /* Tx 7 bits/character */
  94. #define    Tx6                0x40    /* Tx 6 bits/character */
  95. #define    Tx8                0x60    /* Tx 8 bits/character */
  96. #define    DTR                0x80    /* DTR */
  97.  
  98. /* Write Register 6 (Sync bits 0-7/SDLC Address Field) */
  99. /* Write Register 7 (Sync bits 8-15/SDLC 01111110) */
  100. /* Write Register 8 (transmit buffer) */
  101.  
  102. /* Write Register 9 (Master interrupt control) */
  103. #define    VIS                1        /* Vector Includes Status */
  104. #define    NV                2        /* No Vector */
  105. #define    DLC                4        /* Disable Lower Chain */
  106. #define    MIE                8        /* Master Interrupt Enable */
  107. #define    STATHI            0x10    /* Status high */
  108. #define    NORESET            0        /* No reset on write to R9 */
  109. #define    CHRB            0x40    /* Reset channel B */
  110. #define    CHRA            0x80    /* Reset channel A */
  111. #define    FHWRES            0xc0    /* Force hardware reset */
  112.  
  113. /* Write Register 10 (misc control bits) */
  114. #define    BIT6            1        /* 6 bit/8bit sync */
  115. #define    LOOPMODE        2        /* SDLC Loop mode */
  116. #define    ABUNDER            4        /* Abort/flag on SDLC xmit underrun */
  117. #define    MARKIDLE         8        /* Mark/flag on idle */
  118. #define    GAOP            0x10    /* Go active on poll */
  119. #define    NRZ                0        /* NRZ mode */
  120. #define    NRZI            0x20    /* NRZI mode */
  121. #define    FM1                0x40    /* FM1 (transition = 1) */
  122. #define    FM0                0x60    /* FM0 (transition = 0) */
  123. #define    CRCPS            0x80    /* CRC Preset I/O */
  124.  
  125. /* Write Register 11 (Clock Mode control) */
  126. #define    TRxCXT            0        /* TRxC = Xtal output */
  127. #define    TRxCTC            1        /* TRxC = Transmit clock */
  128. #define    TRxCBR            2        /* TRxC = BR Generator Output */
  129. #define    TRxCDP            3        /* TRxC = DPLL output */
  130. #define    TRxCOI            4        /* TRxC O/I */
  131. #define    TCRTxCP            0        /* Transmit clock = RTxC pin */
  132. #define    TCTRxCP            8        /* Transmit clock = TRxC pin */
  133. #define    TCBR            0x10    /* Transmit clock = BR Generator output */
  134. #define    TCDPLL            0x18    /* Transmit clock = DPLL output */
  135. #define    RCRTxCP            0        /* Receive clock = RTxC pin */
  136. #define    RCTRxCP            0x20    /* Receive clock = TRxC pin */
  137. #define    RCBR            0x40    /* Receive clock = BR Generator output */
  138. #define    RCDPLL            0x60    /* Receive clock = DPLL output */
  139. #define    RTxCX            0x80    /* RTxC Xtal/No Xtal */
  140.  
  141. /* Write Register 12 (lower byte of baud rate generator time constant) */
  142. /* Write Register 13 (upper byte of baud rate generator time constant) */
  143.  
  144. /* Write Register 14 (Misc control bits) */
  145. #define    BRENABL            1        /* Baud rate generator enable */
  146. #define    BRSRC            2        /* Baud rate generator source */
  147. #define    DTRREQ            4        /* DTR/Request function */
  148. #define    AUTOECHO         8        /* Auto Echo */
  149. #define    LOOPBAK            0x10    /* Local loopback */
  150. #define    SEARCH            0x20    /* Enter search mode */
  151. #define    RMC                0x40    /* Reset missing clock */
  152. #define    DISDPLL            0x60    /* Disable DPLL */
  153. #define    SSBR            0x80    /* Set DPLL source = BR generator */
  154. #define    SSRTxC            0xa0    /* Set DPLL source = RTxC */
  155. #define    SFMM            0xc0    /* Set FM mode */
  156. #define    SNRZI            0xe0    /* Set NRZI mode */
  157.  
  158. /* Write Register 15 (external/status interrupt control) */
  159. #define    ZCIE            2        /* Zero count IE */
  160. #define    DCDIE            8        /* DCD IE */
  161. #define    SYNCIE            0x10    /* Sync/hunt IE */
  162. #define    CTSIE            0x20    /* CTS IE */
  163. #define    TxUIE            0x40    /* Tx Underrun/EOM IE */
  164. #define    BRKIE            0x80    /* Break/Abort IE */
  165.  
  166.  
  167. /* Read Register 0 */
  168. #define    Rx_CH_AV        0x1        /* Rx Character Available */
  169. #define    ZCOUNT            0x2        /* Zero count */
  170. #define    Tx_BUF_EMP        0x4        /* Tx Buffer empty */
  171. #define    DCD                0x8        /* DCD */
  172. #define    SYNC_HUNT        0x10    /* Sync/hunt */
  173. #define    CTS                0x20    /* CTS */
  174. #define    TxEOM            0x40    /* Tx underrun */
  175. #define    BRK_ABRT        0x80    /* Break/Abort */
  176.  
  177. /* Read Register 1 */
  178. #define    ALL_SNT            0x1        /* All sent */
  179.  
  180. /* Residue Data for 8 Rx bits/char programmed */
  181. #define    RES3            0x8        /* 0/3 */
  182. #define    RES4            0x4        /* 0/4 */
  183. #define    RES5            0xc        /* 0/5 */
  184. #define    RES6            0x2        /* 0/6 */
  185. #define    RES7            0xa        /* 0/7 */
  186. #define    RES8            0x6        /* 0/8 */
  187. #define    RES18            0xe        /* 1/8 */
  188. #define    RES28            0x0        /* 2/8 */
  189.  
  190. /* Special Rx Condition Interrupts */
  191. #define    PAR_ERR            0x10    /* Parity error */
  192. #define    Rx_OVR            0x20    /* Rx Overrun Error */
  193. #define    CRC_ERR            0x40    /* CRC/Framing Error */
  194. #define    END_FR            0x80    /* End of Frame (SDLC) */
  195.  
  196. /* Read Register 2 (channel b only) - Interrupt vector */
  197.  
  198. /* Read Register 3 (interrupt pending register) ch a only */
  199. #define    CHBEXT            0x1        /* Channel B Ext/Stat IP */
  200. #define    CHBTxIP            0x2        /* Channel B Tx IP */
  201. #define    CHBRxIP            0x4        /* Channel B Rx IP */
  202. #define    CHAEXT            0x8        /* Channel A Ext/Stat IP */
  203. #define    CHATxIP            0x10    /* Channel A Tx IP */
  204. #define    CHARxIP            0x20    /* Channel A Rx IP */
  205.  
  206. /* Read Register 8 (receive data register) */
  207.  
  208. /* Read Register 10  (misc status bits) */
  209. #define    ONLOOP            2        /* On loop */
  210. #define    LOOPSEND         0x10    /* Loop sending */
  211. #define    CLK2MIS            0x40    /* Two clocks missing */
  212. #define    CLK1MIS            0x80    /* One clock missing */
  213.  
  214. /* Read Register 12 (lower byte of baud rate generator constant) */
  215. /* Read Register 13 (upper byte of baud rate generator constant) */
  216. /* Read Register 15 (value of WR 15) */
  217.  
  218. /* In 8530.asm: */
  219. void write_scc __ARGS((int16 ctl,int16 reg,int16 val));
  220. char read_scc __ARGS((int16 ctl,int reg));
  221. int rx8530 __ARGS((int16 ctl,int16 data,char *buf,int16 bufsize));
  222.  
  223. #endif /* _8530_H */
  224.  
  225.  
  226.